// pages/market/index.js
const util = require('../../utils/util.js'); // 注意路径是否正确

Page({
  data: {
    stockDate: "", // 初始化空日期
    // 今日板块数据
    sectors: [
      { name: "电子纸", change: "+7.42%" },
      { name: "PEEK材料", change: "+7.34%" },
      { name: "空间计算", change: "+7.10%" },
      { name: "计算机设备", change: "+6.10%" },
      { name: "云端链", change: "+19.96%" },
      { name: "南京制造", change: "+9.26%" },
      { name: "东交科", change: "+19.95%" },
      { name: "古象科技", change: "+12.68%" }
    ],
    // 股票排行榜数据
    stockRankings: {
      rise: [
        { name: '贵州茅台', code: 'sh600519', price: '--', change: '--', speed: '--' },
        { name: '招商银行', code: 'sh600036', price: '--', change: '--', speed: '--' },
        { name: '中国平安', code: 'sh601318', price: '--', change: '--', speed: '--' },
        { name: '隆基绿能', code: 'sh601012', price: '--', change: '--', speed: '--' },
        { name: '五粮液', code: 'sz000858', price: '--', change: '--', speed: '--' }
      ],
      fall: [
        { name: '海康威视', code: 'sz002415', price: '--', change: '--', speed: '--' },
        { name: '中兴通讯', code: 'sz000063', price: '--', change: '--', speed: '--' },
        { name: '格力电器', code: 'sz000651', price: '--', change: '--', speed: '--' },
        { name: '宁德时代', code: 'sz300750', price: '--', change: '--', speed: '--' },
        { name: '京东方A', code: 'sz000725', price: '--', change: '--', speed: '--' }
      ],
      volume: [
        { name: '贵州茅台', code: 'sh600519', price: '--', change: '--', volume: '--' },
        { name: '中国平安', code: 'sh601318', price: '--', change: '--', volume: '--' },
        { name: '招商银行', code: 'sh600036', price: '--', change: '--', volume: '--' },
        { name: '工商银行', code: 'sh601398', price: '--', change: '--', volume: '--' },
        { name: '中国建筑', code: 'sh601668', price: '--', change: '--', volume: '--' }
      ],
      speed: [
        { name: '阿里巴巴', code: 'sh600259', price: '--', change: '--', speed: '--' },
        { name: '腾讯控股', code: 'sh600576', price: '--', change: '--', speed: '--' },
        { name: '美团-W', code: 'sh600602', price: '--', change: '--', speed: '--' },
        { name: '京东集团', code: 'sh600650', price: '--', change: '--', speed: '--' },
        { name: '拼多多', code: 'sh600265', price: '--', change: '--', speed: '--' }
      ]
    },
    // 当前选中的排行榜类型
    currentRankType: 'rise'
  },

  onShow() { // 在生命周期函数中更新（onLoad或onShow）
    const currentDate = new Date();
    this.setData({
      stockDate: util.formatStockDate(currentDate)
    });
    
    // 加载股票数据
    this.loadStockData();
  },
  
  // 加载股票数据
  loadStockData: function() {
    const that = this;
    
    // 处理涨幅榜数据
    this.loadRankingData('rise');
    
    // 处理跌幅榜数据
    this.loadRankingData('fall');
    
    // 处理成交额榜数据
    this.loadRankingData('volume');
    
    // 处理涨速榜数据
    this.loadRankingData('speed');
  },
  
  // 加载特定排行榜的股票数据
  loadRankingData: function(rankType) {
    const that = this;
    const stocks = this.data.stockRankings[rankType];
    const stockCodes = stocks.map(stock => stock.code).join(',');
    
    wx.request({
      url: `https://hq.sinajs.cn/list=${stockCodes}`,
      header: {
        'content-type': 'text/plain',
        'Referer': 'https://finance.sina.com.cn'
      },
      success(res) {
        that.parseStockData(res.data, rankType);
      },
      fail(err) {
        console.error(`获取${rankType}股票数据失败`, err);
      }
    });
  },
  
  // 解析股票数据
  parseStockData: function(data, rankType) {
    try {
      const lines = data.split('\n');
      const updatedStocks = [...this.data.stockRankings[rankType]];
      
      lines.forEach((line, index) => {
        if (!line.trim()) return;
        
        const regex = /=\"(.*)\";/;
        const matches = line.match(regex);
        
        if (matches && matches[1] && index < updatedStocks.length) {
          const elements = matches[1].split(',');
          const currentPrice = parseFloat(elements[3]);
          const prevClose = parseFloat(elements[2]);
          const changeAmount = (currentPrice - prevClose).toFixed(2);
          const changePercent = ((changeAmount / prevClose) * 100).toFixed(2);
          
          updatedStocks[index].price = currentPrice.toFixed(2);
          updatedStocks[index].change = changeAmount > 0 ? '+' + changePercent + '%' : changePercent + '%';
          
          // 根据不同排行榜类型设置额外数据
          if (rankType === 'volume') {
            updatedStocks[index].volume = (parseFloat(elements[9]) / 100000000).toFixed(2) + '亿';
          } else {
            // 模拟涨速数据
            const speed = (Math.random() * 5).toFixed(2);
            updatedStocks[index].speed = changeAmount > 0 ? '+' + speed + '%' : '-' + speed + '%';
          }
        }
      });
      
      // 更新特定排行榜的数据
      const updateData = {};
      updateData[`stockRankings.${rankType}`] = updatedStocks;
      this.setData(updateData);
    } catch (error) {
      console.error('解析股票数据出错', error);
    }
  },
  
  // 跳转到登录页面
  goToLogin: function() {
    wx.navigateTo({
      url: '/pages/login/index'
    });
  },
  
  // 切换排行榜类型
  switchRankType(e) {
    const type = e.currentTarget.dataset.type;
    this.setData({
      currentRankType: type
    });
  },
  
  // 查看全部板块
  viewAllSectors() {
    wx.showToast({
      title: '查看全部板块功能开发中',
      icon: 'none'
    });
  },
  
  // 跳转到个股详情页面
  goToStockDetail: function(e) {
    const stock = e.currentTarget.dataset.stock;
    wx.navigateTo({
      url: `/pages/stock/index?code=${stock.code}`
    });
  }
});